<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Parametres</title>
	</head>
	<body>
		
		<h1 id="titleParameters">Parametres</h1>
		
		<ul>
			<li>
				<a href="#routingController">Passer un paramètre du routeur au controleur</a>
			</li>
			<li>
				<a href="#controllerTemplates">Passer un paramètre du controleur au template</a>
			</li>
		</ul>
		
		<a href="index.html">Retour</a>
		
		<h2 id="routingController">Passer un paramètre du routeur au controleur</h2>
		
		<p>Dans le fichier <em>routing.yml</em> du bundle, on va la route suivante :</p>
		<blockquote><p><code>
			name_route:<br />
			****pattern: /blog/article/<abbr title="C'est le paramètre qui sera envoyé à la fonction du controleur">{id}</abbr><br />
			****default: { _controller: namespace_racineNameBundle:Name_controleur:fonction_controleur, <abbr title="Paramètre avec valeur par défaut">param:value</abbr>}<br />
			****<abbr title="Contraintes sur les paramètres">requirements:</abbr><br />
			********name_param: \d{4}<br />
			********name_param: html|xml<br />
		</code></p></blockquote>
		
		<p>Les contraintes des paramètres sont écrites à l'aide des expressions régulières<br />
		<a href="http://www.siteduzero.com/tutoriel-3-14608-les-expressions-regulieres-partie-1-2.html">Expressions régulières SDZ</a>
		</p>
		
		<p>Dans le fichier <em>Name_controleur</em>, on a la fonction suivante :</p>
		<blockquote><p><code>
			public function fonction_controleurAction($id)<br />
			{<br />
			return new Response("Affichage de l'article $id");<br />
			}<br />
		</code></p></blockquote>
		
		<p><strong>L'ordre des variables du l'url n'est pas forcement l'ordre des paramètres de la fonction du controleur. Symfony compare le nom des variables ils doivent impérativement être identiques. On peut faire passer plusieurs paramètres via une url, pour cela, il faut les séparer par un <em>point</em> ou un <em>slash</em>. Les parmètres ne peuvent donc PAS contenir de <em>point</em> ou de <em>slash</em>.</strong></p>
		
		<p>Exemple de paramètres systèmes :</p>
		<ul>
			<li>
				<em>_format</em> définit si le format est HTML ou XML.<br />
				On le récupère dans le controleur soit comme paramètre <em>$_format</em> soit avec la fonction <em>$this-&lt;get('request')-&lt;getRequetFormat();</em>
			</li>
			<li>
				<em>_locale</em> qui permet de définir la langue. Ne pas oublier les <em>requirements</em> pour définir les langues possibles.
			</li>
		</ul>
		
		<a href="index.html">Retour</a>
		<a href="#titleParameters">Haut de page</a>
		
		<hr />
		
		<h2 id="controllerTemplates">Passer un paramètre du controleur au template</h2>
		
		<ul>
			<li>
				Dans le controleur :<br />
				<blockquote><code>
					return $this-&lt;render('namespace_racineNameBundle:name_template:fonction.html.twig',array('param'=&lt;$param));				
				</code></blockquote>
			</li>
			<li>
				Dans le template :<br />
				<blockquote>
					{{param}}
				</blockquote>
			</li>
		</ul>
		
		
		<a href="index.html">Retour</a>
		<a href="#titleParameters">Haut de page</a>		
		
	</body>
</html>